import axios from 'axios';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css'
// 配置进度条参数
// eslint-disable-next-line standard/object-curly-even-spacing
NProgress.configure({ showSpinner: false, minimum: 0.2, speed: 1000});

// 防止多次请求进度条重复加载

let loadingNum = 0;
const startLoading = () => {
  if (loadingNum === 0) {
    NProgress.start()
  }
  loadingNum++;
}
const endLoading = () => {
  loadingNum--
  if (loadingNum <= 0) {
    NProgress.done()
  }
}

const Instance = axios.create({
  baseURL: '',
  timeout: 3000
})

// 添加请求拦截器
axios.interceptors.request.use((config) => {
  // 在发送请求之前做些什么
  // 1. 加载进度条
  startLoading();

  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
axios.interceptors.response.use((response) => {
  // 对响应数据做点什么
  // 1. 结束进度条
  endLoading();

  return response;
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error);
});

export default Instance;
